MVT (Model-View-Template) 架构

概述

Django 是一个基于 Python 的高级 Web 框架,它遵循 MVT(Model-View-Template)架构。MVT 是 Django 的核心设计模式,它将 Web 应用程序的开发分为三个主要部分:模型(Model)、视图(View)和模板(Template)。这种架构有助于开发者将业务逻辑、数据处理和用户界面分离,从而提高代码的可维护性和可扩展性。

1. Model(模型)

1.1 理论解释

模型是 Django 应用程序的核心,负责处理与数据库的交互。每个模型类对应数据库中的一张表,模型类的字段对应表中的列。Django 的 ORM(对象关系映射)系统允许开发者使用 Python 代码来操作数据库,而不需要编写 SQL 语句。

1.2 代码示例

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=100)
    published_date = models.DateField()

    def __str__(self):
        return self.title

1.3 实践练习

  1. 创建一个新的 Django 项目。
  2. 在项目中创建一个名为 books 的应用。
  3. 在 books 应用中定义一个 Book 模型,包含 title、author 和 published_date 字段。
  4. 运行 makemigrations 和 migrate 命令来创建数据库表。

2. View(视图)

2.1 理论解释

视图是 Django 应用程序的控制器,负责处理用户的请求并返回响应。视图可以是一个函数(函数视图)或一个类(类视图)。视图通常会从模型中获取数据,并将数据传递给模板进行渲染。

2.2 代码示例

from django.shortcuts import render
from .models import Book

def book_list(request):
    books = Book.objects.all()
    return render(request, 'books/book_list.html', {'books': books})

2.3 实践练习

  1. 在 books 应用中创建一个名为 book_list 的视图函数。
  2. 在视图中查询所有的书籍,并将结果传递给模板。
  3. 配置 URL 模式,使 /books/ 路径指向 book_list 视图。

3. Template(模板)

3.1 理论解释

模板是 Django 应用程序的用户界面部分,负责将数据呈现给用户。Django 的模板系统允许开发者使用 HTML 和 Django 模板语言(DTL)来构建动态网页。模板语言提供了丰富的标签和过滤器,用于控制数据的显示和格式化。

3.2 代码示例

<!-- books/templates/books/book_list.html -->
<!DOCTYPE html>
<html>
<head>
    <title>Book List</title>
</head>
<body>
    <h1>Book List</h1>
    <ul>
        {% for book in books %}
            <li>{{ book.title }} by {{ book.author }}</li>
        {% endfor %}
    </ul>
</body>
</html>

3.3 实践练习

  1. 在 books 应用的模板目录中创建一个名为 book_list.html 的模板文件。
  2. 在模板中使用 Django 模板语言循环遍历书籍列表,并显示每本书的标题和作者。
  3. 访问 /books/ 路径,查看书籍列表页面。

4. 总结

MVT 架构是 Django 的核心设计模式,它将 Web 应用程序的开发分为模型、视图和模板三个部分。模型负责数据处理,视图负责业务逻辑,模板负责用户界面。通过这种分离,Django 应用程序变得更加模块化和易于维护。

4.1 下一步

在掌握了 MVT 架构的基本概念后,你可以继续学习 Django 的其他高级功能,如表单处理、用户认证、缓存、RESTful API 开发等。这些功能将进一步增强你的 Django 开发能力。

4.2 参考资源

通过不断实践和学习,你将能够熟练掌握 Django 的 MVT 架构,并开发出功能强大的 Web 应用程序。